package org.wmq.taskschedule.service;

import java.util.concurrent.Future;

public interface ThreadPoolService {
    
    /**
     * 提交任务到线程池
     * @param task 要执行的任务
     * @return 任务执行结果的Future对象
     */
    Future<?> submit(Runnable task);
    
    /**
     * 提交有返回值的任务到线程池
     * @param task 要执行的任务
     * @param <T> 返回值类型
     * @return 任务执行结果的Future对象
     */
    <T> Future<T> submit(CallableTask<T> task);
    
    /**
     * 关闭线程池
     */
    void shutdown();
    
    /**
     * 立即关闭线程池
     */
    void shutdownNow();
    
    /**
     * 获取线程池当前活跃线程数
     * @return 活跃线程数
     */
    int getActiveCount();
    
    /**
     * 获取线程池队列中的任务数
     * @return 队列中的任务数
     */
    int getQueueSize();
    
    /**
     * 自定义有返回值的任务接口
     * @param <T> 返回值类型
     */
    interface CallableTask<T> {
        T call() throws Exception;
    }
}